home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Freeware / Remapollo / Modules / MountENV.s < prev    next >
Text File  |  2002-10-27  |  3KB  |  171 lines

  1.  
  2.     SECTION    MountENVrs000000,CODE
  3.  
  4.     include    lvos
  5.     include    systab.st
  6.  
  7.     mc68000
  8.  
  9.     clrFO
  10. _exec    fo.l    1
  11. _allp3    fo.l    1
  12. _all3    fo.l    1
  13. _allp2    fo.l    1
  14. _all2    fo.l    1
  15. _allp1    fo.l    1
  16. _all1    fo.l    1
  17. _arg2    fo.l    1
  18. _arg1    fo.l    1
  19.  
  20. ProgStart
  21.     moveq    #RETURN_FAIL,d7
  22.     movea.l    (4),a6
  23.     moveq    #dvi_SIZEOF,d0
  24.     move.l    #MEMF_PUBLIC!MEMF_CLEAR,d1
  25.     sys    AllocMem
  26.     tst.l    d0
  27.     beq    _quit
  28.     movea.l    d0,a2
  29.  
  30.     iniFO    a5,a0,d0
  31.     move.l    a6,(_exec,a5)
  32.     lea    (_all1,a5),a0
  33.     lea    (_hand,pc),a1
  34.     bsr    _alloc
  35.     move.l    d0,(dvi_Handler,a2)
  36.     beq    _err
  37.     move.l    #2000,(dvi_Stacksize,a2)
  38.     moveq    #5,d0
  39.     move.l    d0,(dvi_Priority,a2)
  40.     moveq    #-1,d0
  41.     move.l    d0,(dvi_GlobVec,a2)
  42.     moveq    #36,d0
  43.     lea    (_dosn,pc),a1
  44.     sys    OpenLibrary
  45.     tst.l    d0
  46.     beq    _err
  47.     movea.l    d0,a6
  48.  
  49.     moveq    #LDF_ALL!LDF_READ,d1
  50.     sys    LockDosList
  51.     move.l    d0,d1
  52.     beq.b    .ndl
  53.     lea    (_env,pc),a0
  54.     move.l    a0,d2
  55.     moveq    #LDF_ALL,d3
  56.     sys    FindDosEntry
  57.     move.l    d0,d2
  58.     beq    .nf
  59.     moveq    #5,d7
  60. .nf    moveq    #LDF_ALL!LDF_READ,d1
  61.     sys    UnLockDosList
  62. .ndl    tst.l    D2
  63.     bne    _err2
  64.     lea    (_envarc,pc),a0
  65.     move.l    a0,d1
  66.     moveq    #SHARED_LOCK,d2
  67.     sys    Lock
  68.     move.l    d0,d1
  69.     beq.b    \nl
  70.     sys    UnLock
  71. \nl    lea    (_temp,pc),a0
  72.     move.l    a0,d1
  73.     lea    (_arg1,a5),a0
  74.     move.l    a0,d2
  75.     moveq    #0,d3
  76.     sys    ReadArgs
  77.     move.l    d0,d6
  78.     beq    _err2
  79.     lea    (_all2,a5),a0
  80.     lea    (_env,pc),a1
  81.     move.l    (_arg1,a5),d0
  82.     beq.b    \narg
  83.     movea.l    d0,a1
  84. \narg    bsr    _alloc
  85.     move.l    d0,(dvi_Name,a2)
  86.     beq.b    _err3
  87.     move.l    (_arg2,a5),d0
  88.     beq.b    \narg2
  89.     lea    (_all3,a5),a0
  90.     movea.l    d0,a1
  91.     bsr.b    _alloc
  92.     move.l    d0,(dvi_Startup,a2)
  93. \narg2    lea    (_expn,pc),a1
  94.     movea.l    a6,a4
  95.     movea.l    (_exec,a5),a6
  96.     sys    OldOpenLibrary
  97.     tst.l    d0
  98.     beq.b    _fail
  99.     movea.l    d0,a6
  100.     movea.l    a2,a0
  101.     moveq    #0,d0
  102.     moveq    #0,d1
  103.     sys    AddDosNode
  104.     tst.l    d0
  105.     beq.b    .fn
  106.     moveq    #RETURN_OK,d7
  107.  
  108. .fn    movea.l    a6,a1
  109.     movea.l    (_exec,a5),a6
  110.     sys    CloseLibrary
  111. _fail    movea.l    a4,a6
  112. _err3    move.l    d6,d1
  113.     sys    FreeArgs
  114. _err2    movea.l    a6,a1
  115.     movea.l    (_exec,a5),a6
  116.     sys    CloseLibrary
  117.     tst.l    d7
  118.     beq    _skip
  119. _err    moveq    #dvi_SIZEOF,d0
  120.     movea.l    a2,a1
  121.     sys    FreeMem
  122.     moveq    #2,d2
  123.     lea    (_all1,a5),a2
  124. .loop    move.l    (a2)+,d0
  125.     move.l    (a2)+,d1
  126.     beq    .roll
  127.     movea.l    d1,a1
  128.     sys    FreeMem
  129. .roll    dbf    d2,.loop
  130. _skip    unlk    a5
  131. _quit    move.l    d7,D0
  132.     rts
  133.  
  134. _regs    reg    d2/a2/a3/a6
  135. _alloc    movem.l    _regs,-(sp)
  136.     movea.l    a0,a3
  137.     movea.l    a1,a2
  138. \1    tst.b    (a1)+
  139.     bne.b    \1
  140.     suba.l    a2,a1
  141.     move.l    a1,d0
  142.     subq.l    #1,d0
  143.     beq.b    \err
  144.     move.l    d0,d2
  145.     move.l    a1,d0
  146.     addq.l    #1,d0
  147.     move.l    d0,(a3)+
  148.     moveq    #MEMF_PUBLIC,d1
  149.     movea.l    (_exec,a5),a6
  150.     sys    AllocMem
  151.     move.l    d0,(a3)
  152.     beq.b    \err
  153.     movea.l    d0,a1
  154.     lsr.l    #2,d0
  155.     move.b    d2,(a1)+
  156. \2    move.b    (a2)+,(a1)+
  157.     bne.b    \2
  158. \err    movem.l    (sp)+,_regs
  159.     rts
  160.  
  161.  
  162. ;    dc.b    '$VER: MountENV 1.2 (28.3.2002)',10,13,0
  163. _temp    dc.b    'DEVNAME/K,STARTUP/F',0
  164. _dosn    dc.b    'dos.library',0
  165. _expn    dc.b    'expansion.library',0
  166. _envarc    dc.b    'ENVARC:',0
  167. _hand    dc.b    'L:HappyENV-handler',0
  168. _env    dc.b    'ENV',0
  169.  
  170.     end
  171.